home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group96a.txt
/
000011_icon-group-sender _Mon Jan 8 18:07:03 1996.msg
< prev
next >
Wrap
Internet Message Format
|
1996-09-05
|
7KB
Received: by cheltenham.cs.arizona.edu; Tue, 9 Jan 1996 08:52:09 MST
To: icon-group@cs.arizona.edu
Date: 8 Jan 1996 18:07:03 -0700
From: whm@primenet.com (William H. Mitchell)
Message-Id: <4csf3n$744@nnrp1.news.primenet.com>
Organization: Primenet Services for the Internet
Sender: icon-group-request@cs.arizona.edu
References: <199601051418.AA21353@gateway.fedex.com>, <4cm6lc$eob@csnews.cs.colorado.edu>
Subject: Re: RFD: Programming Language Feature Matrix
Errors-To: icon-group-errors@cs.arizona.edu
Status: O
Tom Christiansen <tchrist@mox.perl.com> wrote:
>Having seen mistaken allegations in this thread against both java and
>perl, such as in portability and security, amongst other things, I propose
>the various factions on the net cooperate to create a feature matrix that
>we can all fill out about many different languages to help for simplistic
>at-a-glance comparisons. These already exist for shells, newsreaders, and
>web browsers, so it seems a useful thing to have.
I think this would be an interesting exercise and if done well, could be
useful. There's certainly potential for abuse in the composition of the
matrix, but Tom's proposed matrix doesn't look too bad.
Let's see some more attempts at filling it out. Tom: Do it for perl!
I have a few questions and comments on the list, which are flagged with "whm>".
I've elided the items that I didn't have any issue with.
data types
recursive data types
whm> Does this mean that type X can refer directly or indirectly to
other instances of type X? Or, does it mean that an object can
reference itself, such as a list whose first element is itself?
full lexical closures
whm> What's this?
function calling conventions
whm> In this category I suggest adding:
provision for default value for omitted parameters
named specification of parameters (vs. only positional)
memory allocation
require explicit allocation/deallocation
permit explicit allocation/deallocation
can trash memory via bad pointer/array reference
reference-based garbage collection
mark-sweep style garbage collection
thread-based shared memory
process-based shared memory
whm> Hmm... This is a tough one.
I think the fundamental question is whether memory management
is manual or automatic (garbage collected).
"permit explicit (de)allocation" seems troublesome -- if a language
can interface with the C library it can explicitly manage some memory.
If you say the language must have native support for allocation, it
would eliminate C, which delegates allocation to the library.
I'd say the type of garbage collection is more related to a
particular implementation than the language itself.
I'd say any language that can interface with a C function can get
trash memory.
For shared memory, what level of interaction is imagined? There's
a spectrum from flipping a bit to arbitrary sharing of data between
two processes.
low-level access
native machine language access
whm> What do you mean by this?
multi-threaded applications (emulated, native, and/or pthreads)
whm> With this and the questions above re shared memory in mind, maybe
a section on support for concurrency should be added
objects
fragile superclass problem
whm> What's this? (I sense a perjorative wording...)
operator overloading
function overloading
whm> These are more related to data abstraction. Perhaps that should
should be a category in itself.
whm> I'd surely say add encapsulation control, and class methods and
data. But, if you look at the some of the latest trends in OO
languages I think you'd find a quite a few things to add here.
graphics
whm> I suggest adding platforms on which graphic capabilities are present,
e.g., X, Windows, Mac, PM, etc.
patterns
file wildcards (*.*)
ed-style regular expression
egrep-style regular expressions
posix-compliant regular expressions
regular expression extensions/improvements
whm> There's a world beyond regular expressions. Maybe the classification
should be what level of language in Chomsky's hierarchy can be
described with the pattern facilities of the language.
devel tools
introspection (can examine its own state)
whm> There are a lot of levels of introspective capability. Perhaps
this should be more specific.
easy ramp-up for programmer of...
whm> Hmm... Another tough one. Maybe a statement of suggested background
would be better.
target application areas
whm> I think that by the time the application areas stop coming in you're
going to have a pretty big list. As an alternative, something I
often think about is the philosophy of a language. For example,
I think of C as a language that's close to the machine with few
limitations on the programmer. With this could be included the styles
supported by the language, e.g., imperative, functional, oo, logic,
etc.
size
compiler size
complete bundled kit size
program source size
program object size
program memory size
whm> These are all implementation dependent. Try completing this
category for ML!
robustness and support
formal bug tracking system
whm> Maybe I'm interpreting this wrong but wouldn't be dependent on
vendors/suppliers?
guaranteed virus-free kits
whm> What do you mean by this?
portability
compiles w/ traditional C
compiles w/ ansi C
whm> What if there were a language not implemented in C? :-) Seriously
though, this question leads into implementation dependencies.
Maybe it would be appropriate to ennumerate the languages used
for various implementations.
To me, a thorny issue is that of language vs. library. Via a library, C
has graphics, regular expressions, shared memory, threads, etc. If you say
that the language must have native support for an element, say windows or
regular expressions as a first-class data type, then that's biased against
languages like C and Smalltalk that have a small nucleus but have extensive
libraries available.
I'd like to see a category for the preprocessor, if any. Ada generics and C++
templates are clearly important features, but I see no place for them. I think
there should be a category on expression evaluation. That would be a place to
put backtracking and another topic there could be well-defined order of
evaluation.